﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AutorizaciondeViaje.Models;

namespace AutorizaciondeViaje.Controllers
{
    public class UsuarioController : Controller
    {

        private List<Usuario> CrearUsuarios()
        {
            List<Usuario> usuarios = new List<Usuario>();
            usuarios.Add(new Usuario() { Codigo = "1", Nombres = "Christopher", Apellidos = "Segura", CodArea = "01", CodigoG = "SPC26", CCosto = "1234", DNI = "46061519", Status = "Vacaciones" });
            usuarios.Add(new Usuario() { Codigo = "2", Nombres = "Edgar", Apellidos = "Cipriano", CodArea = "01", CodigoG = "CCE15", CCosto = "1234", DNI = "15054865", Status = "Disponible" });
            return usuarios;
        }

        private Usuario ObtenerUsuario(int Codigo)
        {
            List<Usuario> usuarios = (List<Usuario>)Session["usuarios"];
            Usuario model = usuarios.Single(delegate(Usuario usuario)
            {
                if (int.Parse(usuario.Codigo) == Codigo) return true;
                else return false;
            });
            return model;
        }

        private Usuario BuscarUsuario(string CodigoG)
        {
            List<Usuario> usuarios = (List<Usuario>)Session["usuarios"];
            Usuario model = usuarios.Single(delegate(Usuario usuario)
            {
                if (usuario.CodigoG == CodigoG) return true;
                else return false;
            });
            return model;
        }

        public ActionResult Index()
        {
            if (Session["usuarios"] == null)
                Session["usuarios"] = CrearUsuarios();
            List<Usuario> model = (List<Usuario>)Session["usuarios"];
            return View(model);
        }



        public ActionResult Details(int Codigo)
        {
            Usuario model = ObtenerUsuario(Codigo);
            return View(model);
        }

        public ActionResult Mostrar1(FormCollection form)
        {
            var cod = form["Text1"];
            Usuario model = BuscarUsuario(cod);
            return View(model);
        }

        public ActionResult Create()
        {
            return View();
        } 


        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                List<Usuario> usuarios = (List<Usuario>)Session["usuarios"];
                usuarios.Add(new Usuario()
                {
                    Codigo = collection["Codigo"],
                    Nombres = collection["Nombres"],
                    Apellidos = collection["Apellidos"],
                    CodArea = collection["CodArea"],
                    CodigoG = collection["CodigoG"],
                    CCosto = collection["CCosto"],
                    DNI = collection["DNI"],
                    Status = collection["Status"]
                });
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        
 
        public ActionResult Edit(int Codigo)
        {
            Usuario model = ObtenerUsuario(Codigo);
            return View(model);
        }


        [HttpPost]
        public ActionResult Edit(int Codigo, FormCollection collection)
        {
            try
            {
                Usuario model = ObtenerUsuario(Codigo);
                model.Nombres = collection["Nombres"];
                model.Apellidos = collection["Apellidos"];
                model.CodArea = collection["CodArea"];
                model.CodigoG = collection["CodigoG"];
                model.CCosto = collection["CCosto"];
                model.DNI = collection["DNI"];
                model.Status = collection["Status"];
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }


        public ActionResult Delete(int Codigo)
        {
            Usuario model = ObtenerUsuario(Codigo);
            return View(model);
        }


        [HttpPost]
        public ActionResult Delete(int Codigo, FormCollection collection)
        {

            try
            {
                List<Usuario> usuarios = (List<Usuario>)Session["usuarios"];
                usuarios.Remove(ObtenerUsuario(Codigo));
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
